type Params = {
  [key: string]: string;
};

// 构建get请求字符串
export const buildQueryUrl = (params: Params) => {
  let paramStr = '';
  for (let key in params) {
    if (paramStr === '') {
      paramStr += '?';
    } else {
      paramStr += '&';
    }
    paramStr += `${key}=${params[key]}`;
  }
  return paramStr;
};

// 获取当前页面url
export const getCurrentUrl = () => {
  // 获取当前打开过的页面路由数组
  const routes = getCurrentPages();
  // @ts-ignore
  let { route, options } = routes[routes.length - 1];
  // 路由+参数
  return '/' + route + buildQueryUrl(options);
};

// 页面导航
export const nav = {
  // 跳转页面
  jump: (url: string) => {
    uni.navigateTo({
      url,
    });
  },

  // 关闭当前页面，返回上一页面或多级页面
  back: () => {
    uni.navigateBack();
  },

  // 关闭当前页面，跳转到指定页
  replace: (url: string) => {
    uni.redirectTo({
      url: url,
    });
  },

  // 关闭所有页面，跳转到指定页
  reset: (url: string) => {
    uni.reLaunch({
      url: url,
    });
  },

  // 切换tabBar页面，并关闭其他所有非 tabBar页面
  switch: (url: string) => {
    uni.switchTab({
      url: url,
    });
  },
};
